#!/usr/bin/env node

/**
 * 热启动测试脚本
 * 用于验证 UI 包的热启动功能是否正常工作
 */

const fs = require('fs');
const path = require('path');

console.log('🧪 开始测试 UI 包热启动功能...\n');

// 检查 UI 包是否存在
const uiPackagePath = path.join(__dirname, '../packages/ui');
if (!fs.existsSync(uiPackagePath)) {
  console.error('❌ UI 包不存在:', uiPackagePath);
  process.exit(1);
}

// 检查 UI 包的配置文件
const requiredFiles = [
  'package.json',
  'tsup.config.ts',
  'src/index.ts',
  'src/button.tsx'
];

console.log('📁 检查必要文件...');
for (const file of requiredFiles) {
  const filePath = path.join(uiPackagePath, file);
  if (fs.existsSync(filePath)) {
    console.log(`✅ ${file}`);
  } else {
    console.log(`❌ ${file} - 文件不存在`);
  }
}

// 检查 package.json 中的脚本
const packageJsonPath = path.join(uiPackagePath, 'package.json');
if (fs.existsSync(packageJsonPath)) {
  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
  
  console.log('\n📦 检查 package.json 脚本...');
  if (packageJson.scripts.dev) {
    console.log('✅ dev 脚本已配置');
  } else {
    console.log('❌ dev 脚本未配置');
  }
  
  if (packageJson.scripts['dev:fast']) {
    console.log('✅ dev:fast 脚本已配置');
  } else {
    console.log('❌ dev:fast 脚本未配置');
  }
}

// 检查 tsup 配置
const tsupConfigPath = path.join(uiPackagePath, 'tsup.config.ts');
if (fs.existsSync(tsupConfigPath)) {
  console.log('\n⚙️ 检查 tsup 配置...');
  const configContent = fs.readFileSync(tsupConfigPath, 'utf8');
  
  if (configContent.includes('minify: false')) {
    console.log('✅ 开发模式优化已配置');
  } else {
    console.log('❌ 开发模式优化未配置');
  }
  
  if (configContent.includes('sourcemap: true')) {
    console.log('✅ Source Map 已启用');
  } else {
    console.log('❌ Source Map 未启用');
  }
}

// 检查使用 UI 包的项目
console.log('\n🔍 检查使用 UI 包的项目...');
const appsDir = path.join(__dirname, '../apps');
if (fs.existsSync(appsDir)) {
  const apps = fs.readdirSync(appsDir);
  for (const app of apps) {
    const appPackageJsonPath = path.join(appsDir, app, 'package.json');
    if (fs.existsSync(appPackageJsonPath)) {
      const appPackageJson = JSON.parse(fs.readFileSync(appPackageJsonPath, 'utf8'));
      if (appPackageJson.dependencies && appPackageJson.dependencies['@repo/ui']) {
        console.log(`✅ ${app} 使用了 @repo/ui`);
      }
    }
  }
}

console.log('\n🎯 测试完成！');
console.log('\n📋 下一步：');
console.log('1. 运行 "pnpm dev:ui" 启动 UI 包开发模式');
console.log('2. 运行 "pnpm dev" 启动其他项目');
console.log('3. 修改 packages/ui/src/button.tsx 文件');
console.log('4. 检查其他项目是否能看到变化');
console.log('\n💡 提示：如果热启动不工作，请检查：');
console.log('   - UI 包的开发模式是否正在运行');
console.log('   - 其他项目是否正确引用了 UI 包');
console.log('   - 是否有构建错误'); 